home *** CD-ROM | disk | FTP | other *** search
/ Robotics & Artificial Int…3 (Professional Edition) / Robotics & Artificial Intelligence Tools 2003 (Professional Edition).iso / robot software / webots-kros-1.0.1_setup.exe / {app} / kteam / include / sys / stat.h < prev    next >
C/C++ Source or Header  |  1999-12-23  |  4KB  |  150 lines

  1. #ifndef    _SYS_STAT_H
  2. #define    _SYS_STAT_H
  3.  
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7.  
  8. #include <_ansi.h>
  9. #include <time.h>
  10. #include <sys/types.h>
  11.  
  12. #ifdef __i386__
  13. #ifdef __MSDOS__
  14. #include "stat-dj.h"
  15. #endif
  16. #endif
  17.  
  18. /* dj's stat defines _STAT_H_ */
  19. #ifndef _STAT_H_
  20.  
  21. /* It is intended that the layout of this structure not change when the
  22.    sizes of any of the basic types change (short, int, long) [via a compile
  23.    time option].  */
  24.  
  25. struct    stat 
  26. {
  27.   dev_t        st_dev;
  28.   ino_t        st_ino;
  29.   mode_t    st_mode;
  30.   nlink_t    st_nlink;
  31.   uid_t        st_uid;
  32.   gid_t        st_gid;
  33.   dev_t        st_rdev;
  34.   off_t        st_size;
  35.   /* SysV/sco doesn't have the rest... But Solaris, eabi does.  */
  36. #if defined(__svr4__) && !defined(__PPC__) && !defined(__sun__)
  37.   time_t    st_atime;
  38.   time_t    st_mtime;
  39.   time_t    st_ctime;
  40. #else
  41.   time_t    st_atime;
  42.   long        st_spare1;
  43.   time_t    st_mtime;
  44.   long        st_spare2;
  45.   time_t    st_ctime;
  46.   long        st_spare3;
  47.   long        st_blksize;
  48.   long        st_blocks;
  49.   long    st_spare4[2];
  50. #endif
  51. };
  52.  
  53. #define    _IFMT        0170000    /* type of file */
  54. #define        _IFDIR    0040000    /* directory */
  55. #define        _IFCHR    0020000    /* character special */
  56. #define        _IFBLK    0060000    /* block special */
  57. #define        _IFREG    0100000    /* regular */
  58. #define        _IFLNK    0120000    /* symbolic link */
  59. #define        _IFSOCK    0140000    /* socket */
  60. #define        _IFIFO    0010000    /* fifo */
  61.  
  62. #define     S_BLKSIZE  1024 /* size of a block */
  63.  
  64. #define    S_ISUID        0004000    /* set user id on execution */
  65. #define    S_ISGID        0002000    /* set group id on execution */
  66. #ifndef    _POSIX_SOURCE
  67. #define    S_ISVTX        0001000    /* save swapped text even after use */
  68. #define    S_IREAD        0000400    /* read permission, owner */
  69. #define    S_IWRITE     0000200    /* write permission, owner */
  70. #define    S_IEXEC        0000100    /* execute/search permission, owner */
  71.  
  72. #define    S_ENFMT     0002000    /* enforcement-mode locking */
  73.  
  74. #define    S_IFMT        _IFMT
  75. #define    S_IFDIR        _IFDIR
  76. #define    S_IFCHR        _IFCHR
  77. #define    S_IFBLK        _IFBLK
  78. #define    S_IFREG        _IFREG
  79. #define    S_IFLNK        _IFLNK
  80. #define    S_IFSOCK    _IFSOCK
  81. #define    S_IFIFO        _IFIFO
  82. #endif    /* !_POSIX_SOURCE */
  83.  
  84. #ifdef _WIN32
  85. /* The Windows header files define _S_ forms of these, so we do too
  86.    for easier portability.  */
  87. #define _S_IFMT        _IFMT
  88. #define _S_IFDIR    _IFDIR
  89. #define _S_IFCHR    _IFCHR
  90. #define _S_IFIFO    _IFIFO
  91. #define _S_IFREG    _IFREG
  92. #define _S_IREAD    0000400
  93. #define _S_IWRITE    0000200
  94. #define _S_IEXEC    0000100
  95. #endif
  96.  
  97. #define    S_IRWXU     0000700    /* rwx, owner */
  98. #define        S_IRUSR    0000400    /* read permission, owner */
  99. #define        S_IWUSR    0000200    /* write permission, owner */
  100. #define        S_IXUSR    0000100    /* execute/search permission, owner */
  101. #define    S_IRWXG        0000070    /* rwx, group */
  102. #define        S_IRGRP    0000040    /* read permission, group */
  103. #define        S_IWGRP    0000020    /* write permission, grougroup */
  104. #define        S_IXGRP    0000010    /* execute/search permission, group */
  105. #define    S_IRWXO        0000007    /* rwx, other */
  106. #define        S_IROTH    0000004    /* read permission, other */
  107. #define        S_IWOTH    0000002    /* write permission, other */
  108. #define        S_IXOTH    0000001    /* execute/search permission, other */
  109.  
  110. #define    S_ISBLK(m)    (((m)&_IFMT) == _IFBLK)
  111. #define    S_ISCHR(m)    (((m)&_IFMT) == _IFCHR)
  112. #define    S_ISDIR(m)    (((m)&_IFMT) == _IFDIR)
  113. #define    S_ISFIFO(m)    (((m)&_IFMT) == _IFIFO)
  114. #define    S_ISREG(m)    (((m)&_IFMT) == _IFREG)
  115. #define    S_ISLNK(m)    (((m)&_IFMT) == _IFLNK)
  116. #define    S_ISSOCK(m)    (((m)&_IFMT) == _IFSOCK)
  117.  
  118.  
  119. int    _EXFUN(chmod,( const char *__path, mode_t __mode ));
  120. int     _EXFUN(fchmod,(int __fd, mode_t __mode));
  121. int    _EXFUN(fstat,( int __fd, struct stat *__sbuf ));
  122. int    _EXFUN(mkdir,( const char *_path, mode_t __mode ));
  123. int    _EXFUN(mkfifo,( const char *__path, mode_t __mode ));
  124. int    _EXFUN(stat,( const char *__path, struct stat *__sbuf ));
  125. mode_t    _EXFUN(umask,( mode_t __mask ));
  126.  
  127. #if defined(__rtems__)
  128. int    _EXFUN(mknod,( const char *_path, mode_t _mode, dev_t dev ));
  129. #endif
  130.  
  131. /* Provide prototypes for most of the _<systemcall> names that are
  132.    provided in newlib for some compilers.  */
  133. int    _EXFUN(_fstat,( int __fd, struct stat *__sbuf ));
  134. int    _EXFUN(_stat,( const char *__path, struct stat *__sbuf ));
  135.  
  136. #ifdef __CYGWIN32__
  137. int    _EXFUN(lstat,( const char *__path, struct stat *__buf ));
  138. #endif
  139.  
  140. #if defined(__rtems__)
  141. int    _EXFUN(mknod,( const char *_path, mode_t _mode, dev_t dev ));
  142. int    _EXFUN(lstat,( const char *_path, struct stat *_sbuf ));
  143. #endif
  144.  
  145. #endif /* !_STAT_H_ */
  146. #ifdef __cplusplus
  147. }
  148. #endif
  149. #endif /* _SYS_STAT_H */
  150.